A storage area network (SAN) may be used to provide centralized data sharing, data backup, and storage management. A storage area network is a high-speed network of shared storage systems. Elements of a SAN include servers, switches and storage systems. A storage system is a device that contains a single disk or multiple disks for storing data for a computer system or computer network. A storage system may also contain single or multiple storage controllers for controlling the disks in the system. Each storage controller is itself a hardware device and may have multiple ports. The storage units of a storage system are accessed through the ports and storage controllers of the storage system. Storage units are often called LUNs and are typically the storage entity mounted and accessed by servers of the SAN. “LUN” is a SCSI acronym for logical unit number. The logical unit number addresses one of many storage units that may be present in a SCSI target. This disclosure will use the term storage unit instead of LUN. A collection of storage units is sometimes referred to as a storage pool.
SANs are typically deployed in operating environments that require high availability, necessitating in the design of the networks redundancy and other mechanisms to provide continuous availability in the event of component failure. The storage systems in a SAN can be collocated, which allows for easier maintenance and easier expandability of the storage pool. In a typical network architecture of a SAN, all of the storage units in the storage pool are potentially available to all the servers of the SAN. Additional storage units can be easily added to the storage pool by adding additional disks to the present set of storage systems or by adding additional storage systems together with additional disks. These new storage units will also be accessible from any server of the SAN. A server of a SAN can act as a pathway or transfer agent between the end user and the stored data on the storage units. Each server of a SAN is usually connected to the SAN by two or more host bus adapters (HBAs). Each server also typically includes a communications or multipath driver, which governs the communication between the server and the storage units of the SAN. Network servers may be coupled to the SAN according to the Fibre Channel protocol.
A storage system on a SAN is typically identified by its Node Worldwide Name (WWN). A storage controller on a SAN is typically identified by one or more Port WWNs present on a storage systems with a specific Node WWN. A storage unit on a SAN is typically identified by a unique SCSI logical unit number (LUN) within the storage systems Node WWN. Each storage unit of the SAN can be assigned to one or more predetermined servers of the SAN according the LUN address of the storage unit.
A single storage system in a SAN may be configured to include multiple storage units, which are managed by multiple storage controllers. Storage units on a storage system are accessed through a storage path. The storage path through each storage system is directed by the multipath driver that is installed on each server of the SAN. As an example of a storage path, a multipath driver may identify that a particular storage unit in the SAN is to be accessed through a predetermined port and predetermined storage controller in the storage system. Because a storage unit may be accessed through multiple storage paths, a multipathing driver is required in the server to select from the available storage paths.
The storage paths between a server of the SAN and a storage unit may include a default path and a number of alternate paths. In the event that the storage controller or the port of the storage controller of the default path is rendered inoperable, the multipath driver identifies alternate paths for accessing the storage unit. The selection of an alternate path occurs automatically and is conducted according to the failover protocol of the multipath driver. Often, however, the failover protocol of the multipath driver selects a secondary or alternate path that is also inoperable. For example, a failure of the storage controller will cause all alternate paths through the storage controller to become inoperable. Because multiple ports may be coupled to the failed storage controller multiple alternate paths will be affected by the failure of the single storage controller. Known failover protocols involve a selection of a storage path without regard to the logical relationship between the ports and the controllers of the SAN.